package com.project.mapper;

import com.github.pagehelper.PageInfo;
import com.project.bean.EmployeeBean;
import org.apache.ibatis.annotations.*;

import java.time.LocalDate;
import java.util.List;

/**
 * 员工mapper接口
 */
public interface IEmployeeMapper {
    /**
     * 添加员工
     * @param emBean 员工对象
     * @param deptId 员工所属部门ID
     */
    @Insert("INSERT INTO t_employee(em_name,em_birthday,em_money,fk_deptId)" +
            " values(#{em.name},#{em.birthday},#{em.money},#{deptId})")
    public void add(@Param("em") EmployeeBean emBean,
                    @Param("deptId") int deptId);

    /**
     * 删除员工
     * @param id 员工编号
     */
    @Delete("delete from t_employee where pk_employeeId=#{id}")
    public void del(int id);

    /**
     * 修改员工部门和工资
     * @param id 员工ID
     * @param deptId 部门ID
     * @param money 新工资
     */
    @Update("update t_employee set fk_deptId=#{deptId},em_money=#{money} where pk_employeeId=#{id}")
    public void update(@Param("id") int id,@Param("deptId") int deptId,@Param("money") int money);

    /**
     * 按ID查询员工信息， 同时查询员工的所属性部门
     * @param id 员工ID
     * @return 员工对象
     */
    @Select("select e.*,d.d_name deptName from t_employee e,t_dept d where e.fk_deptId=d.pk_deptId" +
            " and e.pk_employeeId=#{id}")
    @ResultMap("employeeMap")
    public EmployeeBean findById(int id);

    /**
     * 动态条件查询
     * @param name 姓名
     * @param startDate 生日起始日期
     * @param endDate 生日结束日期
     * @return 员工集合
     */
    public List<EmployeeBean> findByItem(@Param("name") String name,
                                         @Param("startDate") LocalDate startDate,
                                         @Param("endDate") LocalDate endDate);
    public EmployeeBean findId(int id);
}
